我试图让两个函数同时运行。

1

2

3

4

5

6

7

8def func1():

print 'Working'

def func2():

print 'Working'

func1()

func2()

有人知道怎么做吗?

python的可能副本:如何并行运行python函数?

执行此操作:

1

2

3

4

5

6

7

8

9

10

11from threading import Thread

def func1():

print 'Working'

def func2():

print 'Working'

if __name__ == '__main__':

Thread(target = func1).start()

Thread(target = func2).start()

他可能想知道,由于全局解释器锁的存在,即使有问题的机器有多个CPU,它们也不会同时执行。wiki.python.org/moin/globalinterpreterlock网站

@Joaquin——你的权利,抱歉,在复制粘贴之后忘记了删除函数执行。

这个叉子炸毁了我的系统。

当函数返回某些内容时,如何获取结果?

没有理由使用两个import语句。只用第二个。

如何为函数提供参数?

关于线程处理的答案是好的,但是您需要对您想要做的事情更加具体一点。

如果您有两个同时使用大量CPU的函数,线程(在cpython中)可能会使您无处可逃。然后,您可能希望了解多处理模块,或者可能希望使用Jython/Ironpython。

如果CPU限制的性能是原因,那么您甚至可以在(非线程的)C中实现一些东西,并且比在Python中执行两个并行的东西更快。

如果没有更多的信息,很难找到一个好的答案。

一个选项,看起来它可以使两个函数同时运行时间,是使用threading模块(本答案中的示例)。

但是,作为正式的python文档,它有一点延迟页面描述。一个更好的尝试使用的模块是multiprocessing。

另外,还有其他的python模块可以用于异步执行(两段代码同时工作)。有关它们的一些信息以及选择它们的帮助,您可以阅读这个堆栈溢出问题。其他用户对threading模块的评论

He might want to know that because of the Global Interpreter Lock

they will not execute at the exact same time even if the machine in

question has multiple CPUs. wiki.python.org/moin/GlobalInterpreterLock

—乔纳斯·埃尔夫斯特?2010年6月2日11:39引用有关threading模块不工作的文档

CPython implementation detail: In CPython, due to the Global Interpreter

Lock, only one thread can execute Python code at once (even though

certain performance-oriented libraries might overcome this limitation).

If you want your application to make better use of the computational resources of multi-core machines, you are advised to use multiprocessing or concurrent.futures.ProcessPoolExecutor.

However, threading is still an appropriate model if you

want to run multiple I/O-bound tasks simultaneously.

我在每个print()函数的末尾附加time.time(),并在另一个答案的代码上将循环限制为9次。我在我的终端看到的是:(‘A’,1509314761.857559)(‘A’,1509314761.857664)(‘A’,1509314761.85767)(‘A’,1509314761.857675)(‘A’,15093147661.85768)(‘A’,1509314761.857685)(‘A’,1509314761.857685)(‘A’,1509314761.85769)(‘A’,1509314761.8593147661.857561.857559)(‘A’,1509314761.1509314761.859314761.857664.857664)(‘A’,15093149314761.1509314761.859314761.8576('B',1509314761.858229)('B',1509314761.858234)('B',1509314761.858239)('B',1509314761.858244)('B',1509314761.858249)('B',1509314761.858253)('B',1509314761.858258)

即使使用多处理,它也不是真正的并发仪式?一个接着一个跑。

@weeffwqg3检查我的答案中有关模块详细信息的链接。你也可以自己检查,但是官方文件应该解释。

这可以通过Ray优雅地完成,该系统允许您轻松地并行和分发您的Python代码。

要使您的示例并行,您需要使用@ray.remote decorator定义函数,然后使用.remote调用它们。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16import ray

ray.init()

# Define functions you want to execute in parallel using

# the ray.remote decorator.

@ray.remote

def func1():

print("Working")

@ray.remote

def func2():

print("Working")

# Execute func1 and func2 in parallel.

ray.get([func1.remote(), func2.remote()])

如果func1()和func2()返回结果,则需要稍微重写上述代码,方法是将ray.get([func1.remote(), func2.remote()])替换为:

1

2

3ret_id1 = func1.remote()

ret_id2 = func1.remote()

ret1, ret2 = ray.get([ret_id1, ret_id2])

与多处理模块或使用多线程相比,使用Ray有许多优点。特别是,相同的代码将在一台机器以及一组机器上运行。

有关Ray的更多优点,请参阅相关文章。

试试这个

1

2

3

4

5

6

7

8

9

10

11

12from threading import Thread

def fun1():

print("Working1")

def fun2():

print("Working2")

t1 = Thread(target=fun1)

t2 = Thread(target=fun2)

t1.start()

t2.start()

增加一个洞察如何解决OP的需求

我认为你试图传达的信息可以通过多重处理来实现。但是,如果您想通过线程来完成它,您可以这样做。这可能有帮助

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15from threading import Thread

import time

def func1():

print 'Working'

time.sleep(2)

def func2():

print 'Working'

time.sleep(2)

th = Thread(target=func1)

th.start()

th1=Thread(target=func2)

th1.start()

与多进程不同,线程模块同时工作,但时间有点偏。下面的代码打印一个"1"和一个"2"。它们分别由不同的函数调用。我确实注意到,当打印到控制台时,它们的时间会略有不同。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18from threading import Thread

def one():

while(1 == num):

print("1")

time.sleep(2)

def two():

while(1 == num):

print("2")

time.sleep(2)

p1 = Thread(target = one)

p2 = Thread(target = two)

p1.start()

p2.start()

输出:(请注意,该空间用于打印之间的等待)

1

2

3

4

5

6

7

8

9

10

11

12

13

141

2

2

1

12

21

12

1

2

不确定是否有办法纠正这个问题,或者它是否重要。只是我注意到的。

python如何同时运行两个函数_关于python:使2个函数同时运行相关推荐

  1. python形参中传入两个实参_认识Python函数的两个概念:形参与实参(16)

    我们先用Python编写一个比较两个数字大小的函数pMax(). def pMax(a,b): '''比较两个数字的大小,并返回较大的数字''' if a < b: print("{0 ...

  2. python怎样连续输入两个数字_在python中生成连续的数字,同时输入不变

    显而易见的是将give变成一个对象而不是一个函数.*任何对象都可以通过定义^{}方法来调用.在 当我们在做的时候,你的代码可以简化很多,所以让我们这样做吧.在class Giver(object): ...

  3. 数据库创建函数_达梦数据库创建UUID函数

    数据库创建函数_达梦数据库创建UUID函数 接触达梦数据库有一段时间了,整理了一些资料,今天分享一下达梦数据UUID自定义函数 UUID函数定义 很多数据库都有提供UUID函数,可是接触达梦数据库后, ...

  4. python一些常用函数_【python】常用的一些内置函数

    1.cmp cmp(A,B)函数,比较A,B的大小,如果A大于B,返回1,A小于B返回-1,A等于B返回0 print cmp(12,33) >>>-1 print cmp(&quo ...

  5. python四大高阶函数_详谈Python高阶函数与函数装饰器(推荐)

    一.上节回顾 Python2与Python3字符编码问题,不管你是初学者还是已经对Python的项目了如指掌了,都会犯一些编码上面的错误.我在这里简单归纳Python3和Python2各自的区别. 首 ...

  6. python deepcopy函数_用Python解数独[6]:递归获得最终答案

    目录 用Python解数独[0] 用Python解数独[1]:求每个单元格的行值域 用Python解数独[2]:求列值域和九宫格值域 用Python解数独[3]:求总值域 用Python解数独[4]: ...

  7. python强制结束函数_为什么Python没有 main 函数?终于有人给出了正确答案!

    毫无疑问,Python中没有所谓的 main 入口函数,但在网上经常有文章提到"Python中的main函数"和"建议编写main函数"等. 他们的目的可能是模 ...

  8. python isalnum函数_探究Python中isalnum()方法的使用

    探究Python中isalnum()方法的使用 isalnum()方法检查判断字符串是否包含字母数字字符. 语法 以下是isalnum()方法的语法: str.isa1num() 参数 NA 返回值 ...

  9. python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法

    0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...

  10. python闭包两种写法_浅析Python闭包

    一.什么是闭包python 在介绍闭包概念前,咱们先来看一段简短的代码数组 def sum_calc(*args):defwrapper(): sum=0for n inargs: sum+=n;re ...

最新文章

  1. java访问glusterfs_GlusterFS: 访问权限设置
  2. 对象内存布局 (5)
  3. 史上最容易理解的暴力递归和动态规划~~
  4. Java新特性之Nashorn的实例详解
  5. 在我眼中的生活的苦难
  6. Python开发——8.模块
  7. 微商卖货怎么引流?微商怎么找客源?
  8. 高级查询组件下拉框联动(三)
  9. android 自动翻页插件,网页自动翻页Chrome插件下载
  10. python经典代码
  11. Flutter _ 状态管理指南篇,Android开发两年
  12. Linux平台基于poll实现网络编程IO多路复用
  13. java能测圈复杂度_[Java教程]圈复杂度
  14. 「掘虫者说」Docker部署组件正常,安全规则正常配置,服务telnet不通
  15. RFID技术在图书管理应用中的优势
  16. css字体_在css中如何引入ttf文件的字体
  17. VC++6.0遇到“error spawning cl.exe”的解决办法
  18. 飞鸽传书网,打造精准化生活搜索
  19. 使用微软官方工具制作启动盘
  20. 有趣的智能合约蜜罐分析(上)

热门文章

  1. Linux系统调用之execve函数与标准C库exec函数族(有关于进程方面的函数族)
  2. 关于《奇点临近》读后的总结与感想
  3. Day-1 货仓选址(绝对值不等式)
  4. 期末小结(一). 专业技术
  5. 【C++】初学1———代码分析
  6. 用海伦公式计算三角形的面积 python_java程序设计1-2之用海伦公式计算三角形的面积...
  7. 2022.7.11~8.1纪中游记
  8. 万能电视遥控器代码表
  9. 程序员的半衰期只有15年
  10. 通过gcloud创建Google Kubernetes Engine(GKE)并通过kubectl访问