Python: 如何运行 同时进行两个循环并向它们传递迭代参数?
Python: How to run two loops simultaneously and pass iterative arguments to them?
我想 运行 使用多线程的两个循环。两个循环的迭代应该给出 100 的组合总和。
例如:
def loopA():
for i in xrange(1,100):
Do A
def loopB():
for j in xrange(1,100):
Do B
现在任何给定时间的总和 i+j 应该是 100
threadA = Thread(target = loopA)
threadB = Thread(target = loobB)
threadA.run()
threadB.run()
所以当循环 A 运行s 一次时,循环 B 应该同时 运行 99 次。(i+j=100)
循环 A 运行 两次,循环 B 应该同时 运行 98 次。
这应该一直持续到循环 A 运行s 99 次并且循环 B 运行s 仅一次。
让我们先从图片中剔除线程,因为这听起来甚至 你 也不确定你到底想做什么。让我们也停止混淆它们的命名,而是称玫瑰为玫瑰。
def encrypt(s, n):
"""Runs string s through n rounds of encryption"""
for _ in range(n):
s = some_encryption_method(s)
return s
def decrypt(s, n):
"""Runs string s through n rounds of decryption"""
for _ in range(n):
s = some_decryption_method(s)
return s
从这里开始就很清楚如何进行了。
for encrypt_rounds in range(101): # 0 -> 100 inclusive
decrypt_rounds = 100 - encrypt_rounds
encrypted_s = encrypt(some_string, encrypt_rounds)
decrypted_s = decrypt(some_string, decrypt_rounds)
为什么要在线程中执行此操作?不清楚您从使用线程中获得了什么,但是 非常 很清楚失去同步性是一个问题。让我们保持简单,然后完全放弃线程,直到我们知道我们需要它!
我想 运行 使用多线程的两个循环。两个循环的迭代应该给出 100 的组合总和。 例如:
def loopA():
for i in xrange(1,100):
Do A
def loopB():
for j in xrange(1,100):
Do B
现在任何给定时间的总和 i+j 应该是 100
threadA = Thread(target = loopA)
threadB = Thread(target = loobB)
threadA.run()
threadB.run()
所以当循环 A 运行s 一次时,循环 B 应该同时 运行 99 次。(i+j=100) 循环 A 运行 两次,循环 B 应该同时 运行 98 次。
这应该一直持续到循环 A 运行s 99 次并且循环 B 运行s 仅一次。
让我们先从图片中剔除线程,因为这听起来甚至 你 也不确定你到底想做什么。让我们也停止混淆它们的命名,而是称玫瑰为玫瑰。
def encrypt(s, n):
"""Runs string s through n rounds of encryption"""
for _ in range(n):
s = some_encryption_method(s)
return s
def decrypt(s, n):
"""Runs string s through n rounds of decryption"""
for _ in range(n):
s = some_decryption_method(s)
return s
从这里开始就很清楚如何进行了。
for encrypt_rounds in range(101): # 0 -> 100 inclusive
decrypt_rounds = 100 - encrypt_rounds
encrypted_s = encrypt(some_string, encrypt_rounds)
decrypted_s = decrypt(some_string, decrypt_rounds)
为什么要在线程中执行此操作?不清楚您从使用线程中获得了什么,但是 非常 很清楚失去同步性是一个问题。让我们保持简单,然后完全放弃线程,直到我们知道我们需要它!