小编xua*_*yue的帖子

Pythonic方式链接python生成器函数以形成管道

我正在使用python进行管道代码重构.

假设我们有一系列生成器函数,我们想将它们链接起来形成一个数据处理管道.

例:

#!/usr/bin/python
import itertools

def foo1(g):
    for i in g:
        yield i + 1

def foo2(g):
    for i in g:
        yield 10 + i

def foo3(g):
    for i in g:
        yield 'foo3:' + str(i)

res = foo3(foo2(foo1(range(0, 5))))

for i in res:
    print i
Run Code Online (Sandbox Code Playgroud)

输出:

foo3:11
foo3:12
foo3:13
foo3:14
foo3:15
Run Code Online (Sandbox Code Playgroud)

我认为这不是foo3(foo2(foo1(range(0, 5))))实现我的管道目标的pythonic方式.特别是当管道中的级数很大时.

我希望我可以像jquery中的链一样重写它.类似的东西:

range(0, 5).foo1().foo2().foo3()
Run Code Online (Sandbox Code Playgroud)

或者可能

l = [range(0, 5), foo1, foo2, foo3]
res = runner.run(l)
Run Code Online (Sandbox Code Playgroud)

但我是发电机主题的新手,无法找到实现这一目标的方法.

欢迎任何帮助.

python generator

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

什么可以使用std :: remove_extent?

我正在研究C++ 11提供的新功能,我找到了std :: remove_extent.

typedef std::remove_extent<int[24]>::type A; // A is int
Run Code Online (Sandbox Code Playgroud)

但是,除了通过从给定类型中删除维度从现有类型定义新类型之外,我找不到此用法.

有谁能建议为什么C++ 11引入了这个功能?使用它有什么好处吗?

c++ c++11

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

Laravel Pusher Presence Channel Auth错误

我正在尝试建立一个在线渠道.但是返回的auth字符串不正确.

这是后端代码:

class pusherController extends Controller
{

    protected $pusher;

    public function __construct(PusherManager $pusher)
    {
        $this->pusher = $pusher;
    }

    public function pusherPinyinAuth(Request $request)
    {
        if($request->user()) {
            $user = $request->user();
            $auth= $this->pusher->presence_auth($request->input('channel_name'),$request->input('socket_id'), $user->id, array('h'=>'user_info'));
            return response($auth);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误信息

Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Auth value for subscription to presence-5 is invalid: should be of format 'key:signature'"}}}
Run Code Online (Sandbox Code Playgroud)

我猜错误是由auth字符串之前添加的额外':'引起的.但我手动删除它仍然报告相同的错误.这是我的字符串输出:

{auth: ":8dacf362f8fe62bae42c33dfe5511d3d1c42144685d5843a6a6a8014490ed0f6",…}
Run Code Online (Sandbox Code Playgroud)

我正在使用https://github.com/vinkla/pusher的推送桥

我想尝试官方的pusher-php-server,但是在作曲家安装之后,我不知道如何在我的代码中使用它.我想知道https://github.com/pusher/pusher-http-php是否有同样的问题.

laravel pusher

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

python itertools循环解释

我在https://more-itertools.readthedocs.io/en/latest/api.html 中遇到了这个循环的代码片段,但我无法理解最后一行如何nexts = cycle(islice(nexts, pending))从 nexts 迭代器中删除耗尽的生成器。据我了解,这从输入中删除了最后一个,但我们不应该删除第一个,即当前抛出此异常的那个吗?

def roundrobin(*iterables):
    """Yields an item from each iterable, alternating between them.

        >>> list(roundrobin('ABC', 'D', 'EF'))
        ['A', 'D', 'E', 'B', 'F', 'C']

    This function produces the same output as :func:`interleave_longest`, but
    may perform better for some inputs (in particular when the number of
    iterables is small).

    """
    # Recipe credited to George Sakkis
    pending = len(iterables)
    if PY2:
        nexts = cycle(iter(it).next for it in iterables)
    else:
        nexts = cycle(iter(it).__next__ for …
Run Code Online (Sandbox Code Playgroud)

python iterator

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

hadoop datanode无法启动。“不包含有效的host:port权限”

我目前正在使用hadoop 1.2.1(因为我需要运行仅支持该版本的空间处理软件)。我正在尝试以一个主节点和三个从节点的多节点模式进行部署。

我确定我可以在没有密码(包括他们自己)的所有主机和从机之间切换。每个节点上的主机名也正确。每个节点共享相同的主机文件:

192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
192.168.56.104 slave3
Run Code Online (Sandbox Code Playgroud)

我在slaves节点上一直有问题,错误日志信息如下,

2015-05-21 23:39:16,841 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: file:///
    at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:164)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:212)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.getAddress(NameNode.java:244)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.getServiceAddress(NameNode.java:236)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:359)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:321)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1712)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1651)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1669)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1795)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:181
Run Code Online (Sandbox Code Playgroud)

core-site.xml中的配置

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在mapred-site.xml中:

<configuration>
    <property>
        <name>mapred.job.tracter</name>
        <value>master:8012</value>  
    </property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

在hdfs-site.xml中:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration
Run Code Online (Sandbox Code Playgroud)

xml hadoop

5
推荐指数
2
解决办法
4982
查看次数

Scala ctrl c不会离开REPL

我来自Python背景,刚开始使用scala。

在python shell中,当我键入命令并在其中键入错误时,我通常使用ctrl c生成键盘Interrupt异常,以便我可以直接键入下一条语句。前面的语句将不会执行,而我仍然在Python shell中。

但是在Scala REPL中,当我输入ctrl c时,我将立即退出Scala REP,这让我很烦。

无论如何,有没有可以使REPL像python shell一样工作?

我正在使用的Scala版本是2.11.7。我正在使用Mac。

python shell scala

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

当使用相同的键集创建两个不同的 Spark Pair RDD 时,Spark 是否会将具有相同键的分区分配到同一台机器上?

我想在两个非常大的键值对 RDD 之间进行连接操作。这两个RDD的key来自同一个集合。为了减少数据混洗,我希望我可以添加一个预分发阶段,以便具有相同键的分区将分布在同一台机器上。希望这可以减少一些洗牌时间。

我想知道 spark 是否足够聪明来为我做这件事,还是我必须自己实现这个逻辑?

我知道当我加入两个 RDD 时,一个使用partitionBy 进行预处理。Spark 足够聪明,可以使用这些信息并且只对另一个 RDD 进行洗牌。但是我不知道如果我同时在两个 RDD 上使用 partitionBy 然后进行 join 会发生什么。

scala join apache-spark rdd

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

在Apache spark中,使用mapPartitions和结合使用broadcast variable和map有什么区别

在 Spark 中,我们使用广播变量来使每台机器都有一个变量的只读副本。我们通常会在闭包之外创建一个广播变量(比如闭包需要的查找表)来提高性能。

我们还有一个叫做 mapPartitions 的 spark 转换操作符,它试图实现同样的目标(使用共享变量来提高性能)。例如,在 mapPartitions 中,我们可以为每个分区共享一个数据库连接。

那么这两者有什么区别呢?我们可以仅将它用于共享变量吗?

java scala apache-spark

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

Apache Spark如何实现其topK()API?

在Apache Spark中有一个RDD.top()API,可以从RDD 返回前k个元素.我想知道这些操作是如何实现的.首先对RDD进行排序然后返回前k个值吗?或者它是否使用其他更有效的实现?

apache-spark

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

无法在Mac OSX上找到由pip安装的python模块的可执行文件

我使用自制软件安装python并使用pip随附在Mac OS EL Captian上安装python软件包.

使用python安装的pip在安装python模块时工作正常,我没有问题在python shell中导入它(我已经测试了请求和beautifulsoup4并且可以找到它们).但是我找不到某些python模块的可执行文件.

例如,在这个问题中,我询问了未找到python sphinx doc generator命令.根据文档,我应该sphinx-build在pip install之后提供可执行命令.但正如您在该问题中看到的那样,找不到该命令.

我进一步尝试了另一个,一个cookiecutter.Pip安装运行顺利,没有任何问题.但仍未找到二进制可执行文件.如你看到的:

JINXUANs-MacBook-Pro:~ jinxuanwu$ pip install cookiecutter
Requirement already satisfied (use --upgrade to upgrade): cookiecutter in /usr/local/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): binaryornot>=0.2.0 in /usr/local/lib/python2.7/site-packages (from cookiecutter)
Requirement already satisfied (use --upgrade to upgrade): whichcraft>=0.1.1 in /usr/local/lib/python2.7/site-packages (from cookiecutter)
Requirement already satisfied (use --upgrade to upgrade): future>=0.15.2 in /Library/Python/2.7/site-packages (from cookiecutter)
Requirement already satisfied (use --upgrade to upgrade): ruamel.yaml>=0.10.12 in /usr/local/lib/python2.7/site-packages (from …
Run Code Online (Sandbox Code Playgroud)

python macos pip

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

React useEffect 钩子不清除间隔

我正在尝试使用反应钩子来构建一个简单的倒数计时器来倒计时 3 秒。但是在 3 秒后 UI 停止渲染但在 console.log 中我仍然可以每秒打印一次。为什么 useEffect 中的第二个数组参数不能阻止这种情况发生?

代码沙箱

function CounterGame() {
  const [timeout, setTimeout] = React.useState(3);

  React.useEffect(() => {
    let id = window.setInterval(() => {
      if (timeout > 0) {
        setTimeout(x => x - 1 );
      }
      // this line keep executing even it timeout reach 0
      console.log("in setInterval", timeout);
    }, 1000)

    return () => {
      window.clearInterval(id);
    }
  }, [timeout])
  return (
    <div className="App">
      See instructions.
      <h1>{timeout} seconds</h1>
      {!timeout && <button>Click</button>}
    </div>
  );
}

const rootElement …
Run Code Online (Sandbox Code Playgroud)

reactjs

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

标签 统计

python ×4

apache-spark ×3

scala ×3

c++ ×1

c++11 ×1

generator ×1

hadoop ×1

iterator ×1

java ×1

join ×1

laravel ×1

macos ×1

pip ×1

pusher ×1

rdd ×1

reactjs ×1

shell ×1

xml ×1