<p>以下几个程序可能会演示如何实现解决方案:</p>
<p><strong>例1</strong></p>
<pre><code>from multiprocessing import *
import time
def main():
array, loops = list(range(1000)), 1000
variable = Value('I')
p = Process(target=sample, args=(array, loops, variable))
p.start()
while variable.value < 1000:
print('Still less than 1000')
time.sleep(0.005)
print('Must be at least 1000')
p.join()
print('Value is', variable.value)
def sample(array, loops, variable):
for number in range(loops):
variable.value = number * 10
print('Sample is done')
if __name__ == '__main__':
main()
</code></pre>
<p><strong>例2</strong></p>
<pre><code>from multiprocessing import *
import time
def main():
processes = 10
array, loops = list(range(1000)), 1000
shared = Array('I', processes)
p_array = []
for index in range(processes):
p = Process(target=sample, args=(array, loops, shared, index))
p.start()
p_array.append(p)
while True:
less_than_1000 = [p for p in enumerate(shared[:]) if p[1] < 1000]
if less_than_1000:
print(less_than_1000)
time.sleep(0.001)
else:
break
print('No process in less than 1000')
for p in p_array:
p.join()
print(shared[:])
def sample(array, loops, p_array, index):
time.sleep(1)
for number in range(loops):
time.sleep(0.001)
p_array[index] = number * 10
print('Sample is done')
if __name__ == '__main__':
main()
</code></pre>
<p><strong>例3</strong></p>
<pre><code>from multiprocessing import *
import time
def main():
array, loops = list(range(1000)), 1000
with Manager() as manager:
variable = manager.Value('I', 0)
p = Process(target=sample, args=(array, loops, variable))
p.start()
while variable.value < 1000:
print('Still less than 1000')
time.sleep(0.005)
print('Must be at least 1000')
p.join()
print('Value is', variable.value)
def sample(array, loops, variable):
for number in range(loops):
variable.value = number * 10
print('Sample is done')
if __name__ == '__main__':
main()
</code></pre>
<p><strong>例4</strong></p>
<pre><code>from multiprocessing import *
import time
def main():
array, loops = list(range(1000)), 1000
event = Event()
p = Process(target=sample, args=(array, loops, event))
p.start()
event.wait()
print('Must be at least 1000')
p.join()
def sample(array, loops, event):
for number in range(loops):
if number >= 100 and not event.is_set():
event.set()
time.sleep(0.001)
print('Sample is done')
if __name__ == '__main__':
main()
</code></pre>
<p>正如你所看到的,有各种各样的方法来完成你所要求的任务。你知道吗</p>