非凡 发表于 2021-7-1 22:09:08

python有没有将两行代码或函数并行运行的方法。

本帖最后由 非凡 于 2021-7-1 22:11 编辑

        发呆的时候,脑子里突然就有了个疑问,代码都是从上往下运行,       

        即便用了循环,递归,那它还是线性的在跑代码,不过是在中途转了一个或多个圈圈,然后继续往下走,始终都是一条路,并没有分叉路。

        我就在想应该存在使 两段代码同时运行的方法吧?

        举个例子:
        这里要将 a 列表和 b 列表里的相对应位置的数相加放到c列表里去。
       
       
a =
b =
c = []


for i in range(6):
    c.append(a+b)

我能想到的是上面代码这样,对于上面这代码我的理解是:“for i in range (6)”这里好比是个人,同时伸两只手去a,b相同位置取东西,然后合并在一起,放到c的相同位置。这里工作的只有“一个人”。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
而我想要的是能不能让“两个人”,一个人x是“for x in a:",一个人y是”for y in b:“同时工作,分别从a 和 b 里按顺序取出东西,然后放到c相应位置。好比流水线上,x 流水线生成a物品,y流水线生成b物品,让后同时生产出来的两个成品组在一起装箱。

for x in a:————
    x          \
                   ——>        c.append(x+y)
                /
for y in a:————
    y


上面这代码不是正确代码,只是想表达我的想法而已。

我想过一个办法,就是把代码换成函数,然后同时调用两个函数。但我没成功,貌似函数只能返回一个值,不能返回多个值,除非多次调用函数和使用递归,其实递归也是多次调用函数吧。。而递归也是先运行完一个递归,再运行下一个递归。

失败的例子:
a =
b =
c = []


def x(y):
    for i in y:
      return i

x(a) + x(b)


那正确的方法是什么?能否有大神帮忙解惑?

关键需求不是完成上面那个例子,而是要满足:
1、实现同时并行两段代码。
2、两段代码是同步运行,且能连续返回多个结果。
3、通过一个机制能获取两段代码同一时刻返回的结果对其进行加工。

suchocolate 发表于 2021-7-1 22:14:21

题目发出来吧。

Daniel_Zhang 发表于 2021-7-1 22:14:36

你这个没必要用到那个思路

Daniel_Zhang 发表于 2021-7-1 22:19:00

你这种情况,用多线程纯粹是浪费,各种调用不见得能比你第一个快多少,甚至可能更慢

现在你先学会基础的,再去考虑多线程之类的东西

非凡 发表于 2021-7-1 23:14:13

suchocolate 发表于 2021-7-1 22:14
题目发出来吧。

就用上面那个简单的例子行不行?
a=
b=
c=[]
从a和b,同时、按顺序提取相应数字,加工后放到c列表

非凡 发表于 2021-7-1 23:15:02

Daniel_Zhang 发表于 2021-7-1 22:19
你这种情况,用多线程纯粹是浪费,各种调用不见得能比你第一个快多少,甚至可能更慢

现在你先学会基础的,再 ...

例子而已,哪去考虑什么浪费不浪费呢?

hrpzcf 发表于 2021-7-1 23:38:29

多线程
线程1从a取出值放入临时变量
线程2从b取出值放入临时变量
线程3负责将两个临时变量取出并相加,放入c

单就你的例子来说,用以上方法的多线程99%的可能会比你第一段代码跑的慢,因为使用多线程实现,中间会多几个环节,还有线程之间的等待时间,线程运行开销等

ba21 发表于 2021-7-1 23:38:49

多线程,多进程

qq1151985918 发表于 2021-7-1 23:46:31

非凡 发表于 2021-7-1 23:14
就用上面那个简单的例子行不行?
a=
b=


这个例子是不需要多线程的
a =
b =
c = []
for x, y in zip(a, b):
    c.append(x + y)
print(c)

逃兵 发表于 2021-7-2 08:39:12

我在初学的时候,也考虑过这个问题。
我想让python同时做两件事(同时执行两个函数)该怎么办呢
其实python有多线程以及多进程,专门针对这种情况
在我们基础学完之后,可以自学他们的使用

附官方文档
threading多进程
https://docs.python.org/zh-cn/3/library/threading.html
multiprocessing多进程
https://docs.python.org/3.9/library/multiprocessing.html

夜莫 发表于 2021-7-2 10:02:19

没意思

永恒的蓝色梦想 发表于 2021-7-4 09:52:49

非凡 发表于 2021-7-1 23:15
例子而已,哪去考虑什么浪费不浪费呢?

我不明白这个并行运行有什么用

lhgzbxhz 发表于 2021-7-4 17:05:23

线程,协程,纤程,进程任你挑。你有这个想法固然是好的,但是建议你学的再深入一点再去学并发编程。

Kayko 发表于 2021-7-6 11:22:54

页: [1]
查看完整版本: python有没有将两行代码或函数并行运行的方法。