擅长:python、mysql、java
<p>我不知道为什么要使用窗口的互斥锁而不是Python的互斥锁</p>
<pre><code>from threading import Thread, Lock
mutex = Lock()
def processData(data):
mutex.acquire()
try:
print('Do some stuff')
finally:
mutex.release()
while True:
t = Thread(target = processData, args = (some_data,))
t.start()
</code></pre>
<p>但是请注意,由于CPython的体系结构(即<a href="http://en.wikipedia.org/wiki/Global_Interpreter_Lock" rel="noreferrer">Global Interpreter Lock</a>),实际上一次只能有一个线程在运行——如果有许多线程是I/O绑定的,这是很好的,尽管您希望尽可能释放锁,以便I/O绑定的线程不会阻止其他线程运行。</p>
<p>对于Python2.6和更高版本,另一种选择是使用Python的<code>multiprocessing</code>包。它镜像了<code>threading</code>包,但将创建全新的进程,这些进程可以同时运行。更新示例很简单:</p>
<pre><code>from multiprocessing import Process, Lock
mutex = Lock()
def processData(data):
with mutex:
print('Do some stuff')
if __name__ == '__main__':
while True:
p = Process(target = processData, args = (some_data,))
p.start()
</code></pre>