小编boa*_*der的帖子

Python线程循环执行但线程数最大

现在,我有一个for循环遍历列表的循环,通常此列表的长度为100-500。在for循环中,每个项目都会打开一个新线程。所以现在我的代码看起来像这样:

    threads = []
    for item in items:
        t = threading.Thread(target=myfunction, args=(item,))
        threads.append(t)
        t.start()
Run Code Online (Sandbox Code Playgroud)

但是我不想每个线程都启动一个新线程,因为每个线程最多只需要花费几秒钟即可执行myfunction。我仍然想做我的循环,在参数中的每个项目上调用myfunction。但是一旦完成就关闭线程,并允许另一个线程接管。我要打开的最大线程数不小于3,不大于20。尽管更简单,但该范围可以变化。我只是不想在循环中的每个项目上打开一个新线程。

对于那些好奇的人,如果重要的话。myfunction是我定义的函数,它使用urllib将发布请求发送到站点。

我是python的新手,但不是一起编码的新手。对不起,菜鸟问题。

python multithreading for-loop

3
推荐指数
1
解决办法
3776
查看次数

RPM规范%post不在rpmbuild中执行

给定最小的RPM规范文件,该文件应仅执行一个%post节:

$ cat ~/RPMBUILD/SPECS/test.spec
Name:           None
Version:        1.0
Release:        1
Summary:        Bla
License:        Proprietary

%description
Bla

%prep

%build

%install

%clean

%post
echo ">>> Inside post <<<"

%files
Run Code Online (Sandbox Code Playgroud)

然而,从回声%post执行:

$ rpmbuild -v -bb  ~/RPMBUILD/SPECS/test.spec
Executing(%prep): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.IvhCZs
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ exit 0
Executing(%build): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.yCLpOK
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ …
Run Code Online (Sandbox Code Playgroud)

rpm rhel rpmbuild rpm-spec

3
推荐指数
1
解决办法
2579
查看次数

将文件的内容管道输入到ls

我有一个名为"input.txt"的文件.包含一行:

/bin
Run Code Online (Sandbox Code Playgroud)

我想使文件的内容成为命令的输入 ls

我试过了

cat input.txt | ls
Run Code Online (Sandbox Code Playgroud)

但它不会输出/ bin目录中的文件列表

我也试过了

ls < input.txt
Run Code Online (Sandbox Code Playgroud)

无济于事.

bash

3
推荐指数
1
解决办法
2148
查看次数

如何在Python的while测试中增加计数器

您如何将以下Java习惯翻译成Python?

Comparable[] a, int lo, int hi;
int i = lo, j = hi+1;
Comparable v = a[lo];

while (a[++i] < v) if (i == hi) break;
Run Code Online (Sandbox Code Playgroud)

我的问题是,在测试中,我不能拥有++ii += 1.

python increment while-loop

2
推荐指数
1
解决办法
3万
查看次数

有没有更好的方法来运行随机选择的功能?

我做了一个Tic-Tac-Toe游戏,对于我制作的AI中的一个,它选择一个用引号括起来的随机函数(所以它是一个字符串)并调用eval()它.这是它的样子:

import random

func_list = ["func1()", "func2()", "func3()"]

eval(random.choice(func_list))
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢使用eval()(不太确定为什么,只是看起来不对).我不喜欢将列表中的函数作为字符串.有没有更好的方法呢?

python eval function

2
推荐指数
1
解决办法
132
查看次数

如何检查字节流中是否只有连续的1和0

我想检查int/long是否只包含一组连续的或零.例如111100000,1100000但不是101000.

我有一个基本的实现如下:

def is_consecutive(val):
        count = 0        
        while val %2 == 0:
            count += 1
            val = val >> 1
        return (0xFFFFFFFF >> count ) & val
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?

python algorithm bit-manipulation

2
推荐指数
1
解决办法
547
查看次数

原始测试需要比蛮力方法更长的时间,我该如何改进?

我试图在一台机器上计算素数,大小约为2 ^ 30-2 ^ 100.
对于任何感兴趣的人,我的算法都包含在
我已经针对O(sqrt(n/2))每个数字优化了这个Python代码(我相信):它只接受奇数,并且我确保传递给它的数字在另一个方法中是奇数.

我使用费马素性测试来尝试加快这个过程.但是,对于内置math.pow()方法,数字太大,所以我使用了Squaring的Exponentiation.
然而,对于更大的数字来说这需要很长时间 - 使用蛮力会更快.

我的实施错了吗?
时间来自平方算法,它的重复堆栈也占用了我的记忆,我应该研究一个更快的算法吗?

要计算数字35184372088967是否为素数,使用我的强力算法需要.00100111秒,但需要.40608秒来运行素数测试.

蛮力素数检查:

def isPrime(n):
    for i in range(3,int(math.sqrt(n)),2):
        if(n%i==0):
            return False
    return True
Run Code Online (Sandbox Code Playgroud)

Fermat算法的实现:

def couldBePrime(n):
        if(n>308):
            return power(2,n-1)%n==1
        else:
            return math.pow(2,n-1)%n==1
Run Code Online (Sandbox Code Playgroud)

通过平方算法的指数化(耗时部分):

def power(base,exp):
    if exp == 0:
        return 1
    elif exp == 1:
        return base
    elif (exp & 1) != 0:
        return base * power(base * base, exp // 2)
    else:
        return power(base * base, exp // 2)
Run Code Online (Sandbox Code Playgroud)

python optimization primes bignum modular-arithmetic

2
推荐指数
1
解决办法
134
查看次数

%config(noreplace) 是否足以指示 RPM 在升级中不要触及配置文件?

在我的 RedHat 7.4 上,我正在使用 CMake 创建一个 RPM,我想要给 RPM 的指令之一是 - 单独保留某个配置文件,以防操作是升级。

我想我可以在我的 CMakeLists.txt 中使用(mcve)来完成此任务:

cmake_minimum_required(VERSION 3.4.0 FATAL_ERROR)                                                                                                                                                                  
project(MyKibana)

set(kibana_version 6.2.2)
set(kibana_dir /usr/share/mykibana)

list(APPEND CPACK_RPM_USER_FILELIST                                                                                                                                                
  "%config(noreplace) ${kibana_dir}/config/kibana.yml"
  )
Run Code Online (Sandbox Code Playgroud)

然而,当我这样做时sudo yum upgrade /tmp/my-kibana-6.2.2-577-g7cca696.el7.my.x86_64.rpm -y,我发现 处的文件/usr/share/mykibana/config/kibana.yml被RPM 中的文件覆盖。

除了指令之外我还需要做些什么吗%config(noreplace)

redhat rpm cmake

1
推荐指数
1
解决办法
1842
查看次数

Python包含异常

我正在查看python中有一个try: except Exception块的代码.我已经识别出可能引发的代码ValueError.

我的问题:ValueErrorexcept条款中Exception包含(除了已经包含的内容ValueError)之外,是否有意义(或者是一种好的做法)?

try:
    func_raises_value_error()
    func_raises_unknown_error()
except (ValueError, Exception) as e:
  pass
Run Code Online (Sandbox Code Playgroud)

python exception-handling exception

0
推荐指数
1
解决办法
95
查看次数

G ++不会将"//"识别为注释

我正在尝试在cygwin上编译以下代码(CYGWIN_NT-6.1-WOW64 1.7.28(0.271/5/3)i686):

// the integration routine
template <typename Method, typename F, typename Float>
 double integrate(F f, Float a, Float b, int steps, Method m)
{
  double s = 0;
  double h = (b-a)/steps;
  for (int i = 0; i < steps; ++i)
    s += m(f, a + h*i, h);
  return h*s;
}

// methods
class rectangular
{
public:
  enum position_type { left, middle, right };
  rectangular(position_type pos): position(pos) {}
  template<typename F, typename Float>
   double operator()(F f, Float x, …
Run Code Online (Sandbox Code Playgroud)

c++ debugging bash cygwin g++

-3
推荐指数
1
解决办法
103
查看次数