给定以下代码
import time
from multiprocessing import Pool
from threading import Lock
import multiprocessing
PROCESSES = 2
WORKER_CALLS = 2
lock = Lock()
def run(num):
lock.acquire()
print("enter"+str(num))
time.sleep(2)
print("exit" + str(num))
lock.release()
if __name__ == "__main__":
pool = multiprocessing.Pool(processes=PROCESSES)
pool_outputs = pool.map(run, range(WORKER_CALLS))
pool.close()
pool.join()
print('Pool:', pool_outputs)
预期输出为,因为假设锁定部分只能有一个进程:
enter0
exit0
enter1
exit1
Pool: [None, None]
但实际产出是:
enter0
enter1
exit0
exit1
Pool: [None, None]
有什么问题,怎么解决?你知道吗
不能像这样锁定进程,必须使用^{} :
而不是
相关问题 更多 >
编程相关推荐